﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace GestionEco
{
    public class Pigeon : Animal
    {
        private static int numero = 0;

        public Pigeon(bool s,int uneVieMax, int uneAttaque, int uneEsquive, int desDegats, int uneVue, int uneRegen, int uneFaimMax, int uneSoifMax, int desPointsActionActuels, Image imagePigeon)
            : base(s, uneVieMax, uneAttaque, uneEsquive, desDegats, uneVue, uneRegen, uneFaimMax, uneSoifMax, desPointsActionActuels, "Pigeon-" + numero++.ToString(), imagePigeon, new List<String> { "Forêt, Plaine, Montagne, Désert" })
        {

        }


        public override void seDeplacer()
        {
            base.seDeplacer();
        }

        public override void seRegenerer()
        {
            base.seRegenerer();
        }

        public override void vieillir()
        {
            base.vieillir();
        }

        public override void seNourrir(EtreVivant e)
        {
            base.seNourrir(e);
        }

        public override void boire(int quantite)
        {
            base.boire(quantite);
        }

        public override EtreVivant seReproduire(EtreVivant unPigeon)
        {
            Pigeon enfant = null;
            if (this.Sexe != unPigeon.Sexe)
            {
                Random rnd = new Random();

                int enfAttaque = (this.Attaque + unPigeon.Attaque) / 2;
                int enfEsquive = (this.Esquive + unPigeon.Esquive) / 2;
                int enfDegats = (this.Degats + unPigeon.Degats) / 2;
                int enfVue = (this.Vue + unPigeon.Vue) / 2;
                int enfRegen = (this.Regen + unPigeon.Regen) / 2;
                int enfFaimMax = (this.FaimMax + unPigeon.FaimMax) / 2;
                //int enfcoeffFaim = (this.coeffFaim + uneChevre.CoeffFaim) / 2;
                int enfVieMax = (this.VieMax + unPigeon.VieMax) / 2;
                int enfSoifMax = (this.SoifMax + unPigeon.SoifMax) / 2;
                //int enfCoeffSoif = (this.coeffSoif + uneChevre.CoeffSoif) / 2;
                int enfPointsActuel = (this.PointsActionActuels + unPigeon.PointsActionActuels) / 2;
                //int enfAgeMax = (this.AgeMax + uneChevre.AgeMax) / 2;
                int enfMajorite = (this.Majorite + unPigeon.Majorite) / 2;
                //int enfNbTourReprod = (this.nbTourReprod + uneChevre.NbTourReprod) / 2;
                int enfS = rnd.Next(1, 3);
                bool enfSexe;

                if (enfS == 1)
                {
                    enfSexe = true;
                }
                else
                {
                    enfSexe = false;
                }


                enfant = new Pigeon(enfSexe, enfVieMax, enfAttaque, enfEsquive, enfDegats, enfVue, enfRegen, enfFaimMax, enfSoifMax, enfPointsActuel, this.imageEtre);
            }
            else
            {
                Console.WriteLine("Les deux etres vivants ont le meme sexe");
                return null;
            }

            return enfant;
        }
    }
}
